home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 24
/
AACD 24.iso
/
AACD
/
Programming
/
2b_CreativE
/
src
/
internal3.s
< prev
next >
Wrap
Text File
|
2001-01-29
|
4KB
|
197 lines
;; Internals
;; KillExe
KILLEXE:
TST.W KILLFLAG
BEQ.S .1
MOVE.L DOSBASE(PC),A6
MOVE.L #NAMEBUF,D1
TSTMOD
BEQ.S .2
MOVE.L D1,A0
.3: TST.B (A0)+
BNE.S .3
MOVE.B #".",-1(A0)
MOVE.B #"m",(A0)
CLR.B 1(A0)
.2: JSR -72(A6)
.1: RTS
;*-*
;; CleanUp All
CLEANUPALL:
move.l DOSBASE,a6
move.l DOS_RDA,d1
beq.S .SKP
JSR -$35A(A6)
.SKP:
BSR CLOSECON
BSR CLOSELOCK
JSR FREEBUFFERS
BSR SETOLDHANDLER
BSR UNLOCKCACHE
MOVE.L DOSBASE,A1
MOVE.L 4,A6
JSR -414(A6)
MOVE.L UTILBASE,A1
JSR -414(A6)
TST.L MATHBASE
BEQ.S .1
MOVE.L MATHBASE(PC),A1
JSR -414(A6)
.1: RTS
;*-*
;; OpenCon
OPENCON:
MOVE.L #CONNAME,D1
MOVE.L #1006,D2
MOVE.L DOSBASE(PC),A6
JSR -30(A6)
MOVE.L D0,STOUT
BEQ LEAVEFAST ; NO CON: --> DEEP TROUBLE
RTS
;*-*
;; HoldCon
HOLDCON:
MOVEM.L D0-D7/A0-A6,-(A7)
BTST #2,CODEPREFS+1
BEQ.S .2
BSR READCON ; MUST BE READABLE
.2: MOVEM.L (A7)+,D0-D7/A0-A6
RTS
;*-*
;; CloseCon
CLOSECON:
BSR HOLDCON
TST.W CONOUT
BEQ.S .1 ; NO CON: SO DON'T CLOSE IT
MOVE.L STOUT(PC),D1
MOVE.L DOSBASE(PC),A6
JSR -36(A6)
.1: RTS
;*-*
;; ReadCon
READCON:
MOVE.L WORK(PC),D2
MOVE.L #10,D3
READSTRING: ; D2=ADR, D3=LEN
MOVE.L STOUT(PC),D1
MOVE.L DOSBASE(PC),A6
JSR -42(A6)
RTS
;*-*
;; FixRetValue
FIXRETVALUE:
MOVEQ #0,D0
MOVE.W RETERROR(PC),D1
BMI.S .1
MOVEQ #5,D0
BTST #3,CODEPREFS+2
BEQ.S .2
MOVE.L D1,D0
EXT.L D0
ADDQ.L #1,D0
BRA.S .1
.2: BTST #5,CODEPREFS+3
BEQ.S .1
MOVE.L BYTEOFF(PC),D0
.1: RTS
;*-*
;; LeaveError
LEAVEERROR:
BSR ERROR
BSR KILLEXE
LEAVEOTHERERROR:
BSR CLEANUPALL
LEAVEFAST:
MOVE.L INITSTACK(PC),A7
BSR.S FIXRETVALUE
RTS
;*-*
;; InstallHandler
INSTALLHANDLER:
;rts
;TST.W CONOUT ; DON'T INSTALL IF IN ASMONE
;BNE.S .1
MOVE.L 4.W,A6
MOVE.L 276(A6),A0
MOVE.L 50(A0),OLDTRAP
MOVE.L #TRAPHANDLER,50(A0)
;DIVU #0,D0
.1: RTS
;*-*
;; SetOldHandler
SETOLDHANDLER:
MOVE.L 4.W,A6
MOVE.L 276(A6),A0
MOVE.L OLDTRAP,D0
BEQ.S .1
MOVE.L D0,50(A0)
.1: RTS
;*-*
;; TrapHandler
TRAPHANDLER:
MOVE.L (A7)+,D0
MOVE.W D0,GURUNUM
MOVEQ #3,D1
CMP.L D1,D0 ; BUS/ADR ER?
BGT.S .2
MOVE.L 4.W,A6
BTST #0,297(A6) ; 68010+ ?
BNE.S .2
ADDQ.L #8,A7
.2: MOVE.L 2(A7),CRASHPC
MOVE.L #.3,2(A7)
RTE
.3: MOVE.W GURUNUM(PC),D0
MOVEQ #31,D1
BCLR D1,D0
CMP.L #50,D0
BMI.S .1
MOVEQ #1,D0
.1: MOVE.W D0,GURUNUM
MOVE.L CRASHPC(PC),D0
SUB.L #S,D0
BMI.S .4
CMP.L #100000,D0 ; MAX EXE SIZE EC
BMI.S .5
.4: MOVEQ #0,D0
.5: MOVE.L D0,CRASHPC
JSR CHECKCOOKIES
DAMAGEDCOOKIES: ; ENTRY FOR OWN-GEN ERRORS
MOVE.W LINENUM(PC),LINENUMC
LEA INTERNALMESSY(PC),A0
LEA CURSPOT(PC),A1
TST.W IEEEPROBLEM
BNE.S IEEEWARN
BSR WRITEFORMAT
BRA LEAVEOTHERERROR
IEEEWARN:
MOVE.L #IEEEMESSY,D2
MOVEQ #IEEEEND-IEEEMESSY,D3
BSR WRITECON
BRA LEAVEOTHERERROR
;*-*
CONNAME:
DC.B 'CON:40/40/560/80/Amiga E Compiler Output',0
EVEN
OLDTRAP: DC.L 0
CURSPOT: DC.W 0
GURUNUM: DC.W 0
LINENUMC: DC.W 0
BUFSPOT: DC.W 0
CRASHPC: DC.L 0
INTERNALMESSY: DC.B "EC INTERNAL ERROR [%d,%d,%d,%d,$%lx] (please report!)",10,0
EVEN
IEEEMESSY: DC.B "PROBLEM: your `mathieeesingbas.library' is"
DC.B " not properly patched (see docs)",10
IEEEEND: EVEN
;*-*